/**
 
 @Name: 用户模块
 
 */

layui.define(['laypage', 'fly', 'element', 'flow'], function (exports) {

    var $ = layui.jquery;
    var layer = layui.layer;
    var util = layui.util;
    var laytpl = layui.laytpl;
    var form = layui.form;
    var laypage = layui.laypage;
    var fly = layui.fly;
    var flow = layui.flow;
    var element = layui.element;
    var upload = layui.upload;

    var gather = {}, dom = {
        mine: $('#LAY_mine')
        , mineview: $('.mine-view')
        , minemsg: $('#LAY_minemsg')
        , infobtn: $('#LAY_btninfo')
    };

    //我的相关数据
    var elemUC = $('#LAY_uc'), elemUCM = $('#LAY_ucm');
    gather.minelog = {};
    gather.mine = function (index, type, url) {
        var tpl = [
            //求解
            '{{# for(var i = 0; i < d.rows.length; i++){ }}\
      <li>\
        {{# if(d.rows[i].collection_time){ }}\
          <a class="jie-title" href="/jie/{{d.rows[i].id}}/" target="_blank">{{= d.rows[i].title}}</a>\
          <i>{{ d.rows[i].collection_time }} 收藏</i>\
        {{# } else { }}\
          {{# if(d.rows[i].status == 1){ }}\
          <span class="fly-jing layui-hide-xs">精</span>\
          {{# } }}\
          {{# if(d.rows[i].accept >= 0){ }}\
            <span class="jie-status jie-status-ok">已结</span>\
          {{# } else { }}\
            <span class="jie-status">未结</span>\
          {{# } }}\
          {{# if(d.rows[i].status == -1){ }}\
            <span class="jie-status">审核中</span>\
          {{# } }}\
          <a class="jie-title" href="/jie/{{d.rows[i].id}}/" target="_blank">{{= d.rows[i].title}}</a>\
          <i class="layui-hide-xs">{{ layui.util.timeAgo(d.rows[i].time, 1) }}</i>\
          {{# if(d.rows[i].accept == -1){ }}\
          <a class="mine-edit layui-hide-xs" href="/jie/edit/{{d.rows[i].id}}" target="_blank">编辑</a>\
          {{# } }}\
          <em class="layui-hide-xs">{{d.rows[i].hits}}阅/{{d.rows[i].comment}}答</em>\
        {{# } }}\
      </li>\
      {{# } }}'
        ];

        var view = function (res) {
            var html = laytpl(tpl[0]).render(res);
            dom.mine.children().eq(index).find('span').html(res.count);
            elemUCM.children().eq(index).find('ul').html(res.rows.length === 0 ? '<div class="fly-msg">没有相关数据</div>' : html);
        };

        var page = function (now) {
            var curr = now || 1;
            if (gather.minelog[type + '-page-' + curr]) {
                view(gather.minelog[type + '-page-' + curr]);
            } else {
                //我收藏的帖
                if (type === 'collection') {
                    var nums = 10; //每页出现的数据量
                    fly.json(url, {}, function (res) {
                        res.count = res.rows.length;

                        var rows = layui.sort(res.rows, 'collection_timestamp', 'desc')
                                , render = function (curr) {
                                    var data = []
                                            , start = curr * nums - nums
                                            , last = start + nums - 1;

                                    if (last >= rows.length) {
                                        last = curr > 1 ? start + (rows.length - start - 1) : rows.length - 1;
                                    }

                                    for (var i = start; i <= last; i++) {
                                        data.push(rows[i]);
                                    }

                                    res.rows = data;

                                    view(res);
                                };

                        render(curr)
                        gather.minelog['collect-page-' + curr] = res;

                        now || laypage.render({
                            elem: 'LAY_page1'
                            , count: rows.length
                            , curr: curr
                            , jump: function (e, first) {
                                if (!first) {
                                    render(e.curr);
                                }
                            }
                        });
                    });
                } else {
                    fly.json('/api/' + type + '/', {
                        page: curr
                    }, function (res) {
                        view(res);
                        gather.minelog['mine-jie-page-' + curr] = res;
                        now || laypage.render({
                            elem: 'LAY_page'
                            , count: res.count
                            , curr: curr
                            , jump: function (e, first) {
                                if (!first) {
                                    page(e.curr);
                                }
                            }
                        });
                    });
                }
            }
        };

        if (!gather.minelog[type]) {
            page();
        }
    };

    if (elemUC[0]) {
        layui.each(dom.mine.children(), function (index, item) {
            var othis = $(item)
            gather.mine(index, othis.data('type'), othis.data('url'));
        });
    }

    //显示当前tab
    if (location.hash) {
        element.tabChange('user', location.hash.replace(/^#/, ''));
    }

    element.on('tab(user)', function () {
        var othis = $(this), layid = othis.attr('lay-id');
        if (layid) {
            location.hash = layid;
        }
    });

    //根据ip获取城市
    if ($('#L_city').val() === '') {
        $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js', function () {
            $('#L_city').val(remote_ip_info.city || '');
        });
    }

    //上传图片
    if ($('.upload-img')[0]) {
        layui.use('upload', function (upload) {
            var avatarAdd = $('.avatar-add');

            upload.render({
                elem: '.upload-img'
                , url: '/user/upload/'
                , size: 50
                , before: function () {
                    avatarAdd.find('.loading').show();
                }
                , done: function (res) {
                    if (res.status == 0) {
                        $.post('/user/set/', {
                            avatar: res.url
                        }, function (res) {
                            location.reload();
                        });
                    } else {
                        layer.msg(res.msg, {icon: 5});
                    }
                    avatarAdd.find('.loading').hide();
                }
                , error: function () {
                    avatarAdd.find('.loading').hide();
                }
            });
        });
    }

    //合作平台
    if ($('#LAY_coop')[0]) {

        //资源上传
        $('#LAY_coop .uploadRes').each(function (index, item) {
            var othis = $(this);
            upload.render({
                elem: item
                , url: '/api/upload/cooperation/?filename=' + othis.data('filename')
                , accept: 'file'
                , exts: 'zip'
                , size: 30 * 1024
                , before: function () {
                    layer.msg('正在上传', {
                        icon: 16
                        , time: -1
                        , shade: 0.7
                    });
                }
                , done: function (res) {
                    if (res.code == 0) {
                        layer.msg(res.msg, {icon: 6})
                    } else {
                        layer.msg(res.msg)
                    }
                }
            });
        });

        //成效展示
        var effectTpl = ['{{# layui.each(d.data, function(index, item){ }}'
                    , '<tr>'
                    , '<td><a href="/u/{{ item.uid }}" target="_blank" style="color: #01AAED;">{{ item.uid }}</a></td>'
                    , '<td>{{ item.authProduct }}</td>'
                    , '<td>￥{{ item.rmb }}</td>'
                    , '<td>{{ item.create_time }}</td>'
                    , '</tr>'
                    , '{{# }); }}'].join('');

        var effectView = function (res) {
            var html = laytpl(effectTpl).render(res);
            $('#LAY_coop_effect').html(html);
            $('#LAY_effect_count').html('你共有 <strong style="color: #FF5722;">' + (res.count || 0) + '</strong> 笔合作授权订单');
        };

        var effectShow = function (page) {
            fly.json('/cooperation/effect', {
                page: page || 1
            }, function (res) {
                effectView(res);
                laypage.render({
                    elem: 'LAY_effect_page'
                    , count: res.count
                    , curr: page
                    , jump: function (e, first) {
                        if (!first) {
                            effectShow(e.curr);
                        }
                    }
                });
            });
        };

        effectShow();

    }

    //提交成功后刷新
    fly.form['set-mine'] = function (data, required) {
        layer.msg('修改成功', {
            icon: 1
            , time: 1000
            , shade: 0.1
        }, function () {
            location.reload();
        });
    }

    //帐号绑定
    $('.acc-unbind').on('click', function () {
        var othis = $(this), type = othis.attr('type');
        layer.confirm('整的要解绑' + ({
            qq_id: 'QQ'
            , weibo_id: '微博'
        })[type] + '吗？', {icon: 5}, function () {
            fly.json('/api/unbind', {
                type: type
            }, function (res) {
                if (res.code === 0) {
                    layer.alert('已成功解绑。', {
                        icon: 1
                        , end: function () {
                            location.reload();
                        }
                    });
                } else {
                    layer.msg(res.msg);
                }
            });
        });
    });


    //我的消息
    gather.minemsg = function () {
        var delAll = $('#LAY_delallmsg')
                , tpl = '{{# var len = d.rows.length;\
    if(len === 0){ }}\
      <div class="fly-none">您暂时没有最新消息</div>\
    {{# } else { }}\
      <ul class="mine-msg">\
      {{# for(var i = 0; i < len; i++){ }}\
        <li data-id="{{d.rows[i].id}}">\
          <blockquote class="layui-elem-quote">{{ d.rows[i].content}}</blockquote>\
          <p><span>{{d.rows[i].time}}</span><a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-danger fly-delete">删除</a></p>\
        </li>\
      {{# } }}\
      </ul>\
    {{# } }}'
                , delEnd = function (clear) {
                    if (clear || dom.minemsg.find('.mine-msg li').length === 0) {
                        dom.minemsg.html('<div class="fly-none">您暂时没有最新消息</div>');
                    }
                }



        fly.json(layui.baseUrl() + '/message/lists/', {}, function (res) {
            var html = laytpl(tpl).render(res);
            dom.minemsg.html(html);
            if (res.rows.length > 0) {
                delAll.removeClass('layui-hide');
            }
        });


        //阅读后删除
        dom.minemsg.on('click', '.mine-msg li .fly-delete', function () {
            var othis = $(this).parents('li'), id = othis.data('id');
            fly.json(layui.baseUrl() + '/message/remove/', {
                message_id: id
            }, function (res) {
                if (res.code === 0) {
                    othis.remove();
                    delEnd();
                }
            });
        });

        //删除全部
        $('#LAY_delallmsg').on('click', function () {
            var othis = $(this);
            layer.confirm('确定清空吗？', function (index) {
                fly.json(layui.baseUrl() + '/message/remove/', {
                    message_id: 0
                }, function (res) {
                    if (res.code === 0) {
                        layer.close(index);
                        othis.addClass('layui-hide');
                        delEnd(true);
                    }
                });
            });
        });

    };

    dom.minemsg[0] && gather.minemsg();

    exports('member', null);

});